﻿using System.Text;
using Styx.Helpers;
using System.IO;
using Styx;
using Styx.Common;
using System.ComponentModel;
using DefaultValue = Styx.Helpers.DefaultValueAttribute;
using Styx.TreeSharp;
using Styx.WoWInternals.WoWObjects;
using System.Windows.Forms;

namespace Paster.GUI
{
    class DiscSettings : Settings
    {
        public static readonly DiscSettings myPrefs = new DiscSettings();
        
        public DiscSettings() 
            :base(Path.Combine(Utilities.AssemblyDirectory, string.Format(@"Routines/Paster/Priest/{0}/{1}/DiscSettings.xml", StyxWoW.Me.RealmName, StyxWoW.Me.Name)))
        {
        }

        [Setting, DefaultValue(false)]
        [Category("Misc Settings")]
        [DisplayName("Atonement")]
        [Description("")]
        public bool Atonement { get; set; }

        [Setting, DefaultValue(false)]
        [Category("Misc Settings")]
        [DisplayName("Atonement use Penance")]
        [Description("Use Penance as DPS")]
        public bool AtonementPenance { get; set; }

        [Setting, DefaultValue(60)]
        [Category("Misc Settings")]
        [DisplayName("Atonement Mana % Stop")]
        [Description("Stop using Atonement if My Mana below %")]
        public int AtonementManaPercent { get; set; }

        [Setting, DefaultValue(true)]
        [Category("Misc Settings")]
        [DisplayName("Auto Dispel")]
        [Description("")]
        public bool AutoDispel { get; set; }

        [Setting, DefaultValue(true)]
        [Category("Misc Settings")]
        [DisplayName("Auto Interrupt")]
        [Description("")]
        public bool AutoInterrupt { get; set; }

        [Setting, DefaultValue(true)]
        [Category("Misc Settings")]
        [DisplayName("Auto Purify")]
        [Description("")]
        public bool AutoPurify { get; set; }

        [Setting, DefaultValue(0)]
        [Category("Misc Settings")]
        [DisplayName("Power Word: Fortitude")]
        [Description("0 = Manual | 1 = Only Buff myself | 3 = Check Evryone")]
        public int BuffFortitude { get; set; }


        [Setting, DefaultValue(false)]
        [Category("Misc Settings")]
        [DisplayName("Power Infusion Auto")]
        [Description("")]
        public bool PowerInfusionAuto { get; set; }

        [Setting, DefaultValue(50)]
        [Category("Misc Settings")]
        [DisplayName("Power Infusion Players HP %")]
        [Description("")]
        public int PowerInfusionPlayerHP { get; set; }

        [Setting, DefaultValue(3)]
        [Category("Misc Settings")]
        [DisplayName("Power Infusion Players Count")]
        [Description("")]
        public int PowerInfusionPlayerCount { get; set; }

        [Setting, DefaultValue(60)]
        [Category("Misc Settings")]
        [DisplayName("Power Infusion Mana %")]
        [Description("")]
        public int PowerInfusionManapercent { get; set; }

        [Setting, DefaultValue(50)]
        [Category("Misc Settings")]
        [DisplayName("Desperate Prayer HP%")]
        [Description("")]
        public int DesperatePrayerPrecent { get; set; }

        [Setting, DefaultValue(70)]
        [Category("Misc Settings")]
        [DisplayName("Gift of the Naaru HP %")]
        [Description("")]
        public int NaaruPercent { get; set; }

        [Setting, DefaultValue(45)]
        [Category("Misc Settings")]
        [DisplayName("Healthstone HP %")]
        [Description("")]
        public int HealthstonePercent { get; set; }

        [Setting, DefaultValue(false)]
        [Category("Misc Settings")]
        [DisplayName("Fear Ward Auto")]
        [Description("")]
        public bool FearWardAuto { get; set; }

        [Setting, DefaultValue(0)]
        [Category("Trinkets")]
        [DisplayName("Trinket 1 Auto")]
        [Description("")]
        public int Trinket1 { get; set; }

        [Setting, DefaultValue(65)]
        [Category("Trinkets")]
        [DisplayName("Trinket 1 Resources")]
        [Description("")]
        public int Trinket1ResourcesPercent { get; set; }

        [Setting, DefaultValue(0)]
        [Category("Trinkets")]
        [DisplayName("Trinket 2 Auto")]
        [Description("")]
        public int Trinket2 { get; set; }

        [Setting, DefaultValue(65)]
        [Category("Trinkets")]
        [DisplayName("Trinket 2 Resources")]
        [Description("")]
        public int Trinket2ResourcesPercent { get; set; }

        [Setting, DefaultValue(true)]
        [Category("Misc Settings")]
        [DisplayName("Power Word: Shield on Tank")]
        [Description("Keep PWS up on Tank")]
        public bool KeepPWSonTank { get; set; }

        [Setting, DefaultValue(100)]
        [Category("Healing Dungeons")]
        [DisplayName("Power Word: Shield HP%")]
        public int PWSD { get; set; }

        [Setting, DefaultValue(90)]
        [Category("Healing Raids")]
        [DisplayName("Power Word Shield HP%")]
        public int PWSR { get; set; }

        [Setting, DefaultValue(85)]
        [Category("Healing Dungeons")]
        [DisplayName("Cascade HP%")]
        public int CascadeHealthPercentD { get; set; }

        [Setting, DefaultValue(3)]
        [Category("Healing Dungeons")]
        [DisplayName("Cascade Player Count")]
        public int CascadePlayerCountD { get; set; }

        [Setting, DefaultValue(85)]
        [Category("Healing Raids")]
        [DisplayName("Cascade HP%")]
        public int CascadeHealthPercentR { get; set; }

        [Setting, DefaultValue(3)]
        [Category("Healing Raids")]
        [DisplayName("Cascade Player Count")]
        public int CascadePlayerCountR { get; set; }

        [Setting, DefaultValue(45)]
        [Category("Healing Dungeons")]
        [DisplayName("Pain Suppression HP%")]
        public int PainTankD { get; set; }

        [Setting, DefaultValue(45)]
        [Category("Healing Raids")]
        [DisplayName("Pain Suppression HP%")]
        public int PainTankR { get; set; }

        [Setting, DefaultValue(90)]
        [Category("Healing Dungeons")]
        [DisplayName("Penance HP%")]
        public int PenanceD { get; set; }

        [Setting, DefaultValue(85)]
        [Category("Healing Raids")]
        [DisplayName("Penance HP%")]
        public int PenanceR { get; set; }

        [Setting, DefaultValue(50)]
        [Category("Healing Dungeons")]
        [DisplayName("Flash Heal HP%")]
        public int FlashD { get; set; }

        [Setting, DefaultValue(45)]
        [Category("Healing Raids")]
        [DisplayName("Flash Heal HP%")]
        public int FlashR { get; set; }

        [Setting, DefaultValue(95)]
        [Category("Healing Dungeons")]
        [DisplayName("Prayer of Mending HP%")]
        public int PomD { get; set; }

        [Setting, DefaultValue(90)]
        [Category("Healing Raids")]
        [DisplayName("Prayer of Mending HP%")]
        public int PomR { get; set; }

        [Setting, DefaultValue(75)]
        [Category("Healing Dungeons")]
        [DisplayName("Prayer of Healing HP%")]
        public int PoHD { get; set; }

        [Setting, DefaultValue(3)]
        [Category("Healing Dungeons")]
        [DisplayName("Prayer of Healing Count")]
        public int PoHPlayerCountD { get; set; }

        [Setting, DefaultValue(75)]
        [Category("Healing Raids")]
        [DisplayName("Prayer of Healing HP%")]
        public int PoHR { get; set; }

        [Setting, DefaultValue(3)]
        [Category("Healing Raids")]
        [DisplayName("Prayer of Healing Count")]
        public int PoHPlayerCountR { get; set; }

        [Setting, DefaultValue(85)]
        [Category("Healing Dungeons")]
        [DisplayName("Heal HP%")]
        public int HealD { get; set; }

        [Setting, DefaultValue(80)]
        [Category("Healing Raids")]
        [DisplayName("Heal HP%")]
        public int HealR { get; set; }

        [Setting, DefaultValue(75)]
        [Category("Healing Dungeons")]
        [DisplayName("Holy Nova HP%")]
        public int HolyNovaHealthPercentD { get; set; }

        [Setting, DefaultValue(3)]
        [Category("Healing Dungeons")]
        [DisplayName("Holy Nova Count")]
        public int HolyNovaPlayerCountD { get; set; }

        [Setting, DefaultValue(75)]
        [Category("Healing Raids")]
        [DisplayName("Holy Nova HP%")]
        public int HolyNovaHealthPercentR { get; set; }

        [Setting, DefaultValue(3)]
        [Category("Healing Raids")]
        [DisplayName("Holy Nova Count")]
        public int HolyNovaPlayerCountR { get; set; }
    }
}
